1. Field of the Invention
The present invention generally relates to Logic Array Block (LAB) based Programmable Logic Devices (PLDs), and more particularly, LAB interconnect lines that have the ability to be interconnect Logic Elements (LEs) in two different LABs.
2. Description of Related Art
A Programmable Logic Device (PLD) is a semiconductor integrated circuit that contains fixed logic circuitry that can be programmed to perform a host of logic functions. In the semiconductor industry, PLDs are becoming increasingly popular for a number of reasons. Due to the advances of chip manufacturing technology, application specific integrated circuits (ASICs) designs have become incredibly complex. This complexity not only adds to design costs, but also the duration of time needed to develop an application specific design. To compound this problem, product life cycles are shrinking rapidly. As a result, it is often not feasible for original equipment manufacturers (OEMs) to design and use ASICs. OEMs are therefore relying more and more on PLDs. The same advances in fabrication technology have also resulted in PLDs with improved density and speed performance. Sophisticated programming software enables complex logic functions to be rapidly developed for PLDs. Furthermore, logic designs generally can also be easily migrated from one generation of PLDs to the next, further reducing product development times. The closing of the price-performance gap with ASICs and reduced product development times makes the use of PLDs compelling for many OEMs.
The architecture of most PLDs defines a two-dimensional array of logic blocks. Row and column inter-logic block lines, typically of varying length and speed, provide signal and clock interconnects between the blocks of logic in the array. The blocks of logic are often referred to by various names, for example as Logic Array Blocks or LABs by the Altera Corporation, assignee of the present application, or Complex Logic Blocks (CLBs), as used by Xilinx Corporation. In the Altera architectures, the LABs are further broken into a plurality of individual logic elements referred to as Logic Elements (LEs) or Adaptive Logic Modules (ALMs). With the Xilinx architecture, the CLBs also include a group of logic elements called Logic Cells or (LCs). The LEs, LCs, or ALMS each typically include such elements as look up tables (LUTs), registers for generating registered outputs, adders and other circuitry to implement various logic and arithmetic functions. For the sake of simplicity, any block of logic containing multiple LEs or ALMs, regardless if organized into a LAB or CLBs, is hereafter generically referred to as a “LABs”. In no way should the term “LAB” be construed as limiting the present invention to a particular PLD architecture and is intended to cover any PLD architecture that uses any type of logic elements grouped together in a block.
The interconnect of most PLDs includes at least two levels: (i) inter-LAB lines that provide the routing between LABs; and (ii) an intra-LAB lines that provide routing within the LABs. For detailed explanation of a two level interconnect hierarchy for a PLD, see U.S. Pat. No. 6,970,014, incorporated herein for all purposes. A brief summary of a two level architecture, however, is provided below.
The inter-LAB interconnect typically includes a plurality of horizontal and vertical lines having a length spanning a predetermined number of LABs. In various PLDs, the inter-LAB lines are not necessarily the same length. For example, it has been known to use global, half, quarter length lines as well as staggered lines each that run a fixed number of LABs (e.g., 4 LABs). “Stitching” buffers and switching multiplexers are periodically provided along the inter-LAB lines. The stitching buffers are provided to stitch together the lines of a given channel and to buffer the signals propagating between the stitched lines. The switching multiplexers are typically provided at the intersection of horizontal and vertical lines and are provided to switch a signal from a horizontal line to a vertical line or vice-versa.
The lower level of interconnect, often referred to as “LAB lines”, provide dedicated routing within a given LAB. In other words, LAB lines interconnect the LEs within a given LAB, but cannot directly communicate with other LEs in other LABs in the array. With this arrangement, the LEs within the same LAB can directly communicate with one another at a relatively high speed. Communication between LEs in different LABs, however, is slower because signals have to be first routed and propagate through the inter-LAB interconnect to the LAB lines of the second LAB.
The issue with the aforementioned interconnect hierarchy is there is no way for an LE in one LAB to directly communicate with an LE in another LAB. The strict hierarchy of limiting intra LAB lines to only within a given LAB means that there is a hard boundary between the individual LABs in known PLD architectures. Consequently, with complex logic designs where many LABs are used, performance is often compromises by the propagation time required to send signals between LABs.
A PLD with LAB interconnect lines that span adjacent LABs in the array and that have the ability to interconnect two LEs in the different LABs is therefore needed.